package org.jgs1904.demo;

import org.apache.shiro.crypto.hash.Md5Hash;
import org.apache.shiro.crypto.hash.SimpleHash;

/**
 * @author 墨苍璃
 * @date 2022年06月30日21时50分
 * <p>
 * 数据加密
 */
public class Encipherment {

    public static void main(String[] args) {
        String password = "123456";

        //md5加密 2次加密结果一样    88163c52fdb7520d2da5295dcb52bff0
        Md5Hash md5Hash = new Md5Hash(password);
        System.out.println(md5Hash.toHex());
        Md5Hash md5Hash1 = new Md5Hash(password);
        System.out.println(md5Hash1.toHex());

        //带盐的MD5加密。盐就是在原有字符串后面拼接盐形成新的字符串，然后加密。
        Md5Hash md5Hash2 = new Md5Hash(password, "bjsxt");
        System.out.println(md5Hash2);

        //无论是否加盐都可以很容易的被破解，可以多次迭代加密保证数据安全性。
        // 第三个参数表示迭代加密次数
        Md5Hash md5Hash3 = new Md5Hash(password, "bjsxt", 2);
        System.out.println("带盐加密2次");
        System.out.println(md5Hash3);

        //使用Md5的父类也可以实现
        SimpleHash simpleHash = new SimpleHash("md5", password, "hong", 2);
        System.out.println(simpleHash);

    }

}
